Devices that communicate with each other, such as over a network, may often make use of interfaces or protocols that may define or describe types and/or formats of data that may be exchanged between the devices. For example, in various smart power systems, a power meter may send power usage data to a receiving device using an interface understood by both devices. Over time, however, the capabilities of one or both of the devices may be modified or otherwise updated. In some circumstances, the data exchange interface used between the devices may be updated to a new version as well, such as in order to support the modifications to the capabilities of the devices.
However, in some scenarios, it may not be possible, or desirable, for both devices to utilize the same version of the data exchange interface. For instance, in the smart power example described above, updates to the power meter may be remotely managed by the power company and may occur on a completely different schedule than updates to the receiving device, which might be controlled by individual home/building owners and completed when convenient (if ever). In addition, some devices may intentionally implement custom versions of standard data exchange interfaces to support vendor-specific extensions and proprietary features that provide a competitive edge. These receivers may therefore be difficult to update to a new interface version. Additionally, some devices may lack the facility to be updated—for example, some devices may implement a data exchange interface in hardware logic, or may lack sufficient storage or additional computing power to incorporate an update to an interface. Thus, even when the sending device is able to be updated, the receiving device may not be able to be updated as regularly, if at all. For these and other reasons, two devices which intended to communicate may find themselves relying on mismatched versions of a data exchange interface.
In some existing techniques, this potential mismatch may be addressed utilizing code or other logic operated by the receiver device to translate between different interface versions. However, receiver-side translation may be hard to implement efficiently on low-power receivers. Further it may be just as difficult to keep translation logic up-to-date as it would be to update a receiver's interface logic. Thus, such receiver code may not deal well with continued updates to the interface on the sender end.